var express = require("express");
var User = require("../models/user");
var md5 = require("blueimp-md5");

var router = express.Router();

//渲染注册页面   get请求    '/#toregister'
router.get("/register", function (req, res) {
  res.render("register.html");
});

// 处理注册请求   post请求    '/login#register' /login#register
router.post("/register", function (req, res) {
  // 1. 获取表单提交的数据
  //    req.body
  // 2. 操作数据库
  //    判断改用户是否存在
  //    如果已存在，不允许注册
  //    如果不存在，注册新建用户
  // 3. 发送响应
  var body = req.body;
  console.log(body);
  User.findOne(
    {
      $or: [
        {
          email: body.email,
        },
        {
          nickname: body.nickname,
        },
      ],
    },
    function (err, data) {
      if (err) {
        return res.status(500).json({
          success: false,
          message: "服务端错误",
        });
      }
      // console.log(data)
      if (data) {
        // 邮箱或者昵称已存在
        // .json是express中 将json格式的数据转换字符串的数据，并发送给客户端
        return res.status(200).json({
          err_code: 1,
          message: "Email or nickname already exists.",
        });
      }

      // 对密码进行 md5 重复加密(二次加密)  在保存用户数据之前，进行加密操作
      body.password = md5(md5(body.password));

      new User(body).save(function (err, user) {
        if (err) {
          return res.status(500).json({
            err_code: 500,
            message: "Internal error.",
          });
        }

        // 注册成功，使用 Session 记录用户的登录状态
        req.session.user = user; // 在session中创建一个user，将当前user的信息存放进去

        // Express 提供了一个响应方法：json
        // 该方法接收一个对象作为参数，它会自动帮你把对象转为字符串再发送给浏览器
        res.status(200).json({
          err_code: 0,
          message: "OK",
        });

        // 服务端重定向只针对同步请求才有效，异步请求无效
        // res.redirect('/')
      });
    }
  );
});

module.exports = router;
